package es.udc.fbellas.j2ee.tiendaweb.model.carrito;

import java.util.ArrayList;
import java.util.List;

import es.udc.fbellas.j2ee.util.exceptions.InstanceNotFoundException;

public class Carrito{


	private String loginUsuario;
	private List<LineaCarrito> productos = new ArrayList();

//constructor en caso de que el usuario este autenticado
	public Carrito(String login){

		loginUsuario=login;
	}

//constructor en caso de q el usuario no este autenticado
	public Carrito(){}

//pone el login de usuario
	public void setLogin(String login){

		this.loginUsuario=login;
	}

//devuelve el login de usuario
	public String getLogin(){

		return loginUsuario;
	}

//borra todas las lineas del carrito
	public void borraCarrito(){
		productos.clear();
	}


//anade una producto al carrito
	public void anadeLinea(int idProducto, int numUnidades){
		productos.add(new LineaCarrito(idProducto,numUnidades));
	}





//visualiza el carrito en consola
	public List<LineaCarrito> visualizaCarrito() {
		return productos;
	}

	//pasa el carrito a un string
	public String toString() {

		String prod = new String("");

		if (productos.isEmpty()) 
			return new String("El carrito del usuario " + loginUsuario + " esta vacio");
		else {

			for(int i=0;i<productos.size();i++)
				prod = prod + productos.get(i).visualizaLinea() + "\n";
		}
	return prod;

	}


//se le pasa el id del prodcuto y el NUEVO NUMERO DE UNIDADES y las actualiza
	public void actualizaNumUnidades(int idProducto, int unidades)
	throws InstanceNotFoundException{

		if (productos.isEmpty()) 
			throw new InstanceNotFoundException(null,"carrito");
		else {
			for(int i=0;i<productos.size();i++){
				if(   ((LineaCarrito) productos.get(i)).comparaId(idProducto)  )
					productos.set(i,new LineaCarrito(idProducto,unidades));

			}
		}
	}


//elimina un producto del carrito

	public void eliminaProducto(int idProducto)
	throws InstanceNotFoundException{

		if (productos.isEmpty()) 
			throw new InstanceNotFoundException(null,"carrito");
		else {
			for(int i=0;i<productos.size();i++){
				if(   ((LineaCarrito) productos.get(i)).comparaId(idProducto)  )
					productos.remove(i);

			}
		}


	}

//public int creaPedido(){

//int idPedido =0;
//
////cojemos la fecha actual y la tenemos como Date de sql
//Calendar calendario= Calendar.getInstance();
//Date fechaTemp = calendario.getTime();
//java.sql.Date fecha= new java.sql.Date(fechaTemp.getTime());
//
//
//cojemos los datos del usuario para obetener el idTarjeta y el idDir
//        Connection connection = null;
//    	UsuarioProfileTO usuario = null;
//		
//        try {        
//            
//            DataSource dataSource = new SimpleDataSource();
//            connection = dataSource.getConnection();        
//            SQLUsuarioProfileDAO dao = SQLUsuarioProfileDAOFactory.getDAO();
//			usuario = dao.find(connection,loginUsuario);
//            
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            try {
//                GeneralOperations.closeConnection(connection);
//			} catch (InternalErrorException k){
//				k.printStackTrace();
//			}
//        }
//        
//		connection = null;
//
//creamos los detalles del pedido en la base de datos   
//        try {        
//           DataSource dataSource = new SimpleDataSource();
//           connection = dataSource.getConnection();        
//           SQLDetallesPedidoDAO dao = SQLDetallesPedidoDAOFactory.getDAO();
//
//            DetallesPedidoTO detallesTO = new DetallesPedidoTO(0,fecha,usuario.getNumTarjeta(),"PENDIENTE",loginUsuario,usuario.getIdDir());
//            detallesTO = dao.create(connection, detallesTO);
//            idPedido=detallesTO.getIdPedido();
//			
//
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            try {
//                GeneralOperations.closeConnection(connection);
//            } catch (InternalErrorException e) {
//                e.printStackTrace();
//            }
//        }          
//    
//return idPedido;
//
//}
//
//public void creaLineasPedido(int idPedido){
//	
//	for(int i=0;i<productos.size();i++)
//		((LineaCarrito) productos.get(i)).creaLineaPedido(idPedido);
//
//this.borraCarrito();
//}




   public static void main (String[] args) {

	int pedido;
	//List<LineaCarrito> productos = new ArrayList();


System.out.println("***************************************************************");
System.out.println("*            PRUEBA DE UNIDAD PARA EL CARRITO                 *");
System.out.println("***************************************************************");

	System.out.println("");
	System.out.println("Test para carrito de compra :: crear");
	Carrito carrito=new Carrito("INSAAA");
	System.out.println("Login del propietario del carrito: " +carrito.getLogin());

	System.out.println("");
	System.out.println("Test para carrito de compra :: anhadir producto");
	carrito.anadeLinea(78453,4);
	carrito.anadeLinea(98345,5);
	carrito.anadeLinea(98432,6);
	System.out.println(carrito);
	

	System.out.println("");
	System.out.println("Test para carrito de compra :: eliminar producto");
	try{
	carrito.eliminaProducto(98432);
	}catch(InstanceNotFoundException e){System.out.println("producto no eliminado");}
	System.out.println(carrito);

	System.out.println("");
	System.out.println("Test para carrito de compra :: cambiar el numero de unidades de un producto");
	try{
	carrito.actualizaNumUnidades(98432,1);
	}catch(InstanceNotFoundException e){System.out.println("unidades no actualizadas");}
	System.out.println(carrito);

	System.out.println("");
	System.out.println("Test para carrito de compra :: crear el pedido");
	//pedido=carrito.creaPedido();
	//carrito.creaLineasPedido(pedido);
	System.out.println(carrito);
	}

}
